package com.shangxia.monomer.study.designPatterns.structuralType.adapter;

import lombok.extern.slf4j.Slf4j;

/**
 * @ProjectName: monomer
 * @ClassName: AdapterDemo
 * @Time: 2021/7/22
 * @Author: zhouy
 * @Description:
 * @Experience:
 */

@Slf4j
public class AdapterDemoSed {

    /**
     * <li>当你希望使用某些现有类，但其接口与您的其他代码不兼容时，请使用适配器模式</li>
     * <li>当你希望重用几个现有的子类，这些子类拥有一些不能添加到超类的公共功能时，请使用适配器模式</li>
     * ApplicationListener
     */


    public static void main(String[] args) {
        Duck2 duck2 = new TurkeyAdapter2();
        duck2.quack();
    }

}

interface Duck2 {
    void quack();
}

interface Turkey2 {
    void gobble();
}

class WildTurkey2 implements Turkey2 {
    @Override
    public void gobble() {
        System.out.println("gobble!");
    }
}

class TurkeyAdapter2 extends WildTurkey2 implements Duck2 {

    @Override
    public void quack() {
        System.out.println("quack!");
    }
}